home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / byt85aug.arc / SYS.HOP < prev    next >
Encoding:
Text File  |  1985-08-29  |  3.4 KB  |  104 lines

  1. dec true, false : truval ;
  2. infix :: : 4 ;
  3. infix is_in : 3 ;
  4. infix U : 4 ;
  5. infix subtr : 5 ;
  6. infix intersect : 5 ;
  7. infix subset : 5 ;
  8. infix *** : 5 ;
  9. infix and : 5 ;
  10. infix or  : 4 ;
  11. typevar alpha;
  12. typevar beta ;
  13. type stream == num ;
  14. dec _ : alpha;
  15. data set(alpha) == nil_set ++ cons_set(alpha X set alpha) ;
  16. dec is_in : (alpha X set(alpha) ) -> truval ;
  17. dec U : ( set alpha X set alpha ) -> set alpha ;
  18. dec set_add : alpha X set alpha -> set alpha ;
  19. dec subtr : set alpha X set alpha -> set alpha ;
  20. dec intersect : set alpha X set alpha -> set alpha ;
  21. dec subset : set alpha X set alpha -> truval ;
  22. dec split : set alpha -> ( set alpha X set alpha) ;
  23. dec singleton_split : set alpha -> (alpha X set alpha) ;
  24. dec cardinal : set alpha -> num;
  25. dec map_set : (alpha -> beta) X set alpha -> set beta ;
  26. dec *** : (alpha X beta -> beta) X (set(alpha) X beta) -> beta ;
  27. data list(alpha) == nil ++ alpha :: list(alpha)
  28.                    ++ lcons(alpha X list(alpha));
  29. infix + , -  : 5 ;
  30. infix * , div , mod : 6 ;
  31. infix = , < , > , /= , =< , >= : 6 ;
  32. infix  <> : 4 ;
  33. dec + , - , * , div , mod  : (num X num) -> num ;
  34. dec not : truval -> truval ;
  35. dec < , =< , > , >= , /= : (alpha X alpha) -> truval ;
  36. dec = : (alpha X alpha) -> truval ;
  37. dec <> : list alpha X list alpha -> list alpha ;
  38. dec print : alpha -> alpha ;
  39. dec pr : list char -> void ;
  40. dec prstrlst : list(list(char)) X stream -> void ;
  41. dec crlf : char ;
  42. dec and, or : (truval X truval) -> truval ;
  43. dec open_out_stream : list char -> stream ;
  44. dec open_in_stream  : list char -> stream ;
  45. dec close_stream    : stream -> void ;
  46. dec putch : stream X char -> void ;
  47. dec getch : stream -> char ;
  48. dec eof_char : char ;
  49. dec lazyread : stream ->  list( char) ;
  50. dec input : list( char) ->  list( char) ;
  51. dec output : list( char) -> (char -> void);
  52. dec undefined : alpha ;
  53. dec newname : list char -> list char ;
  54. --- set_add(x,y) <= {x} U y ;
  55.  
  56. !--- map_set(_,nil_set) 
  57. !    <= nil_set;
  58.  
  59. !---  map_set(f,cons_set(x,y))
  60. !     <=     set_add(f(x),map_set(f,y)) ;
  61.  
  62. !---  f *** (nil_set,b)
  63. !     <=    b ;
  64.  
  65. !---  f *** (cons_set(x,y),b)
  66. !     <=    f *** (y,f(x,b)) ;
  67.  
  68. dec P : set(alpha) # set(set (alpha)) -> set (set (alpha));
  69. dec Power : set(alpha) # set(set(alpha)) # set (set(alpha)) # num # num ->
  70.             set(set(alpha));
  71. dec power_set : set alpha -> set(set alpha);
  72.  
  73.  
  74. --- P(S,S1) <=  (lambda (S2,SD) => SD U
  75.                 map_set((lambda x => cons_set(x,S2)),(S subtr S2))) ***
  76.                   (S1,nil_set);
  77.  
  78. --- Power(S,S1,S2,n,m) 
  79.     <= S2 if n = m
  80.           else let p == P(S,S1) in
  81.                 Power(S,p,p U S2,n+1,m);
  82. --- power_set( S)
  83.        <= let p== cons_set(nil_set,nil_set) 
  84.           in Power( S, p, p, 0, cardinal( S)) ;
  85.  
  86. --- lazyread( n)
  87.        <= let k== getch( n)
  88.           in if( k = eof_char)
  89.              then let _ == close_stream( n)
  90.                   in k::nil
  91.              else lcons( k, lazyread( n)) ;
  92. --- input( x)
  93.        <= lazyread( open_in_stream( x)) ;
  94. --- output( x)
  95.        <= let n== open_out_stream( x)
  96.           in( lambda c=> if( c = eof_char)
  97.                         then ! let _ == ! close_stream( n)
  98. !                             in pr(crlf ::nil)
  99.                         else putch( n, c)) ;
  100. --- not(true) <= false ;
  101. --- not(false) <= true ;
  102. dec error : alpha -> beta ;
  103. --- error(x) <= undefined(pr(x)) ;
  104.